home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / leapftp_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  132 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. # Ref: 
  5. #
  6. # Date: Mon, 09 Jun 2003 12:19:40 +0900
  7. # From: ":: Operash ::" <nesumin@softhome.net>
  8. # To: bugtraq@securityfocus.com
  9. # Subject: [LeapFTP] "PASV" Reply Buffer Overflow Vulnerability
  10. #
  11.  
  12. if(description)
  13. {
  14.  script_id(11705);
  15.  script_version("$Revision: 1.3 $");
  16.  
  17.  name["english"] = "LeapFTP Overflow";
  18.  
  19.  script_name(english:name["english"]);
  20.  
  21.  desc["english"] = "
  22. The remote host is running LeapFTP - a FTP client.
  23.  
  24. There is a flaw in the remote version of this software which may 
  25. allow an attacker to execute arbitrary code on this host.
  26.  
  27. To exploit it, an attacker would need to set up a rogue FTP
  28. server and have a user on this host connect to it.
  29.  
  30. Solution : Upgrade to version 2.7.4.x or newer
  31. Risk factor : High";
  32.  
  33.  
  34.  
  35.  script_description(english:desc["english"]);
  36.  
  37.  summary["english"] = "Determines the presence of LeapFTP";
  38.  
  39.  script_summary(english:summary["english"]);
  40.  
  41.  script_category(ACT_GATHER_INFO);
  42.  
  43.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  44.  family["english"] = "Windows";
  45.  script_family(english:family["english"]);
  46.  
  47.  script_dependencies("netbios_name_get.nasl",
  48.               "smb_login.nasl","smb_registry_access.nasl");
  49.  script_require_keys("SMB/name", "SMB/login", "SMB/password",
  50.              "SMB/WindowsVersion",
  51.              "SMB/registry_access");
  52.  
  53.  script_require_ports(139, 445);
  54.  exit(0);
  55. }
  56.  
  57.  
  58. include("smb_nt.inc");
  59.  
  60.  
  61.  
  62. rootfile = registry_get_sz(key:"SOFTWARE\Microsoft\Windows\CurrentVersion", item:"ProgramFilesDir");
  63. if(!rootfile)
  64. {
  65.  exit(0);
  66. }
  67. else
  68. {
  69.  share = ereg_replace(pattern:"([A-Z]):.*", replace:"\1$", string:rootfile);
  70.  exe =  ereg_replace(pattern:"[A-Z]:(.*)", replace:"\1\LeapFTP\LeapFTP.exe", string:rootfile);
  71.  }
  72.  
  73.  
  74.  
  75.  
  76. name     =  kb_smb_name();
  77. login    =  kb_smb_login();
  78. pass      =  kb_smb_password();
  79. domain     =  kb_smb_domain();
  80. port    =  kb_smb_transport();
  81. if(!port) port = 139;
  82.  
  83.  
  84.  
  85. if(!get_port_state(port))exit(0);
  86.  
  87. soc = open_sock_tcp(port);
  88. if(!soc)exit(0);
  89.  
  90.  
  91.  
  92. r = smb_session_request(soc:soc, remote:name);
  93. if(!r)exit(0);
  94.  
  95. prot = smb_neg_prot(soc:soc);
  96. if(!prot)exit(0);
  97.  
  98. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  99. if(!r)exit(0);
  100.  
  101. uid = session_extract_uid(reply:r);
  102.  
  103.  
  104.  
  105. r = smb_tconx(soc:soc, name:name, uid:uid, share:share);
  106. tid = tconx_extract_tid(reply:r);
  107. if(!tid)exit(0);
  108.  
  109. fid = OpenAndX(socket:soc, uid:uid, tid:tid, file:exe);
  110. if(fid != 0)
  111. {
  112.  fsize = smb_get_file_size(socket:soc, uid:uid, tid:tid, fid:fid);
  113.  
  114.  off = fsize - 1024;
  115.  data = ReadAndX(socket:soc, uid:uid, tid:tid, fid:fid, count:1024, off:off);
  116.  data = str_replace(find:raw_string(0), replace:"", string:data);
  117.  
  118.  version = strstr(data, "FileVersion");
  119.  if(!version)exit(0);
  120.  for(i=strlen("FileVersion");i<strlen(version);i++)
  121.  {
  122.  if((ord(version[i]) < ord("0") ||
  123.     ord(version[i]) > ord("9")) && 
  124.     version[i] != ".")break;
  125.  else 
  126.    v += version[i];
  127.  
  128.  if(ereg(pattern:"(1\..*|2\.([0-6]\.|7\.([0-3]\..*)))", string:v))security_hole(port);
  129. }
  130.